/* 

给定一个无重复元素的有序整数数组 nums 。

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说，nums 的每个元素都恰好被某个区间范围所覆盖，并且不存在属于某个范围但不属于 nums 的数字 x 。

列表中的每个区间范围 [a,b] 应该按如下格式输出：

"a->b" ，如果 a != b
"a" ，如果 a == b


示例：
输入：nums = [0,1,2,4,5,7]
输出：["0->2","4->5","7"]
解释：区间范围是：
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

*/

/* 
思路1(个人思路)：双指针，判断后一项的值是否前一项+1,是的话右指针继续右移，否则左指针移到此时右指针所在位置

*/

/**
 * @param {number[]} nums
 * @return {string[]}
 */
 var summaryRanges = function(nums) {
    //  思路1：个人思路
    const n=nums.length
    let res=[]
    let left=0,right=1
    while(left<n){
        // console.log(left);
        // 左右相邻两项差1时
        if(nums[right-1]+1==nums[right]){
            right++   // 右指针右移
        }else{
            // 左右指针相邻时只返回左指针所在项
            if(left+1==right){
                res.push(nums[left]+'')
            }else{
                res.push(nums[left]+"->"+nums[right-1])
            }
            left=right++// 左指针移到右指针，右指针右移
        }
    }
    // return res

    // 
    /* const ret = [];
    let i = 0;
    const n = nums.length;
    while (i < n) {
        const low = i;
        i++;
        while (i < n && nums[i] === nums[i - 1] + 1) {
            i++;
        }
        const high = i - 1;
        const temp = ['' + nums[low]];
        if (low < high) {
            temp.push('->');
            temp.push('' + nums[high]);
        }
        ret.push(temp.join(''));
    }
    return ret; */

};
/* 

*/

// 运行
let nums = [0,1,2,4,5,7]
let res = summaryRanges(nums)
console.log(res);